package com.eastfair.venueservice.service;

import com.eastfair.boot.service.SuperService;
import com.eastfair.venueservice.dto.WorkOvertimeSpecDTO;
import com.eastfair.venueservice.entity.WorkOvertimeSpec;
import com.eastfair.venueservice.vo.WorkOvertimeSpecVO;

import java.util.List;

/**
 * <p>
 * 业务接口
 * 加班规格
 * </p>
 *
 * @author dqq
 * @date 2023 -05-05
 */
public interface WorkOvertimeSpecService extends SuperService<WorkOvertimeSpec> {

    /**
     * 加班规则ID查询规格列表VO.
     *
     * @param workOvertimeRuleId the work overtime rule id
     * @return the list
     */
    List<WorkOvertimeSpecVO> listVOByWorkOvertimeSpec(Long workOvertimeRuleId);

    /**
     * 查询加班规格列表.
     *
     * @param query the query
     * @return the list
     */
    List<WorkOvertimeSpec> listWorkOvertimeSpec(WorkOvertimeSpecDTO query);

    /**
     * 加班规则ID查询加班规格列表.
     *
     * @param workOvertimeRuleId the work overtime rule id
     * @return the list
     */
    List<WorkOvertimeSpec> listByWorkOvertimeRuleId(Long workOvertimeRuleId);

    /**
     * 保存加班规格.
     *
     * @param workOvertimeSpecDTO the work overtime spec dto
     * @return the work overtime spec
     */
    WorkOvertimeSpec saveWorkOvertimeSpec(WorkOvertimeSpecDTO workOvertimeSpecDTO);

    /**
     * 批量保存加班规格.
     *
     * @param list the list
     * @return the boolean
     */
    boolean saveBatch(List<WorkOvertimeSpecDTO> list);

    /**
     * 批量保存加班规格.
     *
     * @param list               the list
     * @param workOvertimeRuleId the work overtime rule id
     * @return the boolean
     */
    boolean saveBatch(List<WorkOvertimeSpecDTO> list, Long workOvertimeRuleId);

    /**
     * 更新加班规格.
     *
     * @param workOvertimeSpecDTO the work overtime spec dto
     * @return the work overtime spec
     */
    WorkOvertimeSpec updateWorkOvertimeSpec(WorkOvertimeSpecDTO workOvertimeSpecDTO);

    /**
     * 加班规则ID删除加班规格.
     *
     * @param ruleId the rule id
     * @return the boolean
     */
    boolean removeByWorkOvertimeRuleId(Long ruleId);
}
